package br.com.jukebox.general;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * @author Rafael Fernandes
 */
public class Util {
    
    /**
     * <p>Verifica se o OS onde a aplicação está rodando é Windows Based.</p>
     * @return boolean
     */
    public static boolean isWindows(){
        return verificaStringPeloPadraoCaseInsensitive(System.getProperty("os.name"),"win");
    }

    /**
     * <p>Verifica se o OS onde a aplicação roda é Unix Based.</p>
     * @return boolean
     */
    public static boolean isLinux(){
        return verificaStringPeloPadraoCaseInsensitive(System.getProperty("os.name"),"n[iu]x");
    }
    
    /**
     * <p>Método que valida uma String passada por parâmetro. Se a String
     * for <u>nula</u> ou <u>vazia</u> será retornado <b>false</b>.</p>
     * @param p_string -> String a ser verificada
     * @return boolean
     */
    public static boolean isStringNull(String p_string){
        if (p_string.equals("") || p_string == null){
            return true;
        }else{
            return false;
        }
    }
    
    /**
     * <p>Método que verifica se uma String existe um padrão especificado
     * em RegExp pelo parâmetro</p>
     * @param p_string -> String
     * @param p_pattern -> Padrão em RegExp a ser encontrado na String
     * @return boolean
     */
    public static boolean verificaStringPeloPadraoCaseInsensitive(String p_string, String p_pattern){
        Pattern regExp = Pattern.compile(p_pattern, Pattern.CASE_INSENSITIVE);
        Matcher verificador = regExp.matcher(p_string);
        if (verificador.find()){
            return true;
        }else {
            return false;
        }
    }
    
    /**
     * <p>Método que retorna o tipo de separador de Arquivos de acordo com o
     * OS onde a Aplicação está rodando. Se for Windows será "\" se for Unix
     * "/".</p>
     * @return java.util.String
     */
    public static String getOSFileSeparator() {
        return System.getProperty("file.separator");
    }

}
